/**
 * 
 */
package ec.edu.uce.erp.web.controladores;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ec.edu.uce.erp.common.util.SeguridadesException;
import ec.edu.uce.erp.ejb.persistence.entities.CompaniaDTO;
import ec.edu.uce.erp.ejb.servicio.ServicioAdministracion;
import ec.edu.uce.erp.web.common.controladores.BaseController;
import ec.edu.uce.erp.web.common.controladores.MensajesWebController;
import ec.edu.uce.erp.web.datamanager.CompaniaDataManager;

/**
 * @author 
 *
 */
@ViewScoped
@ManagedBean (name="companiaController")
public class CompaniaController extends BaseController{
	
	private static final long serialVersionUID = 1L;
	private static final Logger slf4jLogger = LoggerFactory.getLogger(CompaniaController.class);
	
	@EJB
	private ServicioAdministracion servicioAdministracion;
	
//	private CompaniaDTO companiaInstancia;
//	private CompaniaDTO companiaBuscar;
//	private List<CompaniaDTO> listaCompania;
	
	@ManagedProperty(value="#{companiaDataManager}")
	private CompaniaDataManager companiaDataManager;
	
	/**
	 * @param companiaDataManager the companiaDataManager to set
	 */
	public void setCompaniaDataManager(CompaniaDataManager companiaDataManager) {
		this.companiaDataManager = companiaDataManager;
	}
	
	public CompaniaController () {}
	
//	@PostConstruct
//	public void inicializarObjetos () {
//		slf4jLogger.info("inicializarObjetos");
//		this.companiaInstancia = new CompaniaDTO();
//		this.companiaBuscar = new CompaniaDTO();
//		this.listaCompania = new ArrayList<CompaniaDTO>();
//	}
	
	public void registrarCompania () {
		try {
			
			slf4jLogger.info("registrarCompania");
			
//			this.servicioAdministracion.registrarCompania(getCompaniaInstancia());
//			setCompaniaInstancia(new CompaniaDTO());
			
			CompaniaDTO companiaNueva = this.servicioAdministracion.registrarCompania(companiaDataManager.getCompaniaInstancia());
			companiaDataManager.getListaCompania().add(companiaNueva);
			companiaDataManager.setCompaniaInstancia(new CompaniaDTO());
			
			MensajesWebController.aniadirMensajeInformacion("Compania registrada correctamente");
			
		} catch (SeguridadesException e) {
			slf4jLogger.info(e.toString());
			MensajesWebController.aniadirMensajeError(e.getMessage());
		}
	}
	
	public void buscarCompania () {
		try {
			
			slf4jLogger.info("buscarCompania");
			List<CompaniaDTO> companiasCol = this.servicioAdministracion.buscarCompania(companiaDataManager.getCompaniaEditar());
			
			if (CollectionUtils.isEmpty(companiasCol) && companiasCol.size()==0) {
				MensajesWebController.aniadirMensajeAdvertencia("erp.mensaje.busqueda.vacia");
				companiaDataManager.setListaCompania(new ArrayList<CompaniaDTO>());
				companiaDataManager.setCompaniaEditar(new CompaniaDTO());
			} else {
				companiaDataManager.setListaCompania(companiasCol);
			}
			
		} catch (SeguridadesException e) {
			slf4jLogger.info(e.toString());
			MensajesWebController.aniadirMensajeError(e.getMessage());
		}
		
	}

//	/**
//	 * @return the companiaInstancia
//	 */
//	public CompaniaDTO getCompaniaInstancia() {
//		return companiaInstancia;
//	}
//
//	/**
//	 * @param companiaInstancia the companiaInstancia to set
//	 */
//	public void setCompaniaInstancia(CompaniaDTO companiaInstancia) {
//		this.companiaInstancia = companiaInstancia;
//	}
//
//	/**
//	 * @return the companiaBuscar
//	 */
//	public CompaniaDTO getCompaniaBuscar() {
//		return companiaBuscar;
//	}
//
//	/**
//	 * @param companiaBuscar the companiaBuscar to set
//	 */
//	public void setCompaniaBuscar(CompaniaDTO companiaBuscar) {
//		this.companiaBuscar = companiaBuscar;
//	}
//
//	/**
//	 * @return the listaCompania
//	 */
//	public List<CompaniaDTO> getListaCompania() {
//		return listaCompania;
//	}
//
//	/**
//	 * @param listaCompania the listaCompania to set
//	 */
//	public void setListaCompania(List<CompaniaDTO> listaCompania) {
//		this.listaCompania = listaCompania;
//	}
	
}
